package com.smart.system.domain.dto;


import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceSettingsDto {
    @Schema(description = "部门id")
    private Long deptId;

    @Schema(description = "设备ID")
    private String deviceid;

    @Schema(description = "紧急联系人号码1")
    private String sos1;

    @Schema(description = "紧急联系人号码2")
    private String sos2;

    @Schema(description = "紧急联系人号码3")
    private String sos3;

    @Schema(description = "计步器开关，1表示开启，0表示关闭")
    private String stepswitch;

    @Schema(description = "定位间隔时间（分钟数），例如 \"5\" 表示5分钟。特殊情况下 \"0.11\" 表示11秒，\"0.12\" 表示12秒")
    private String locationtimeinterval;

    @Schema(description = "心率间隔时间（分钟数），例如 5 表示5分钟")
    private String heartratetimeinterval;

    @Schema(description = "血压间隔时间（分钟数），空字符串表示清除")
    private String bpi;

    @Schema(description = "体温间隔时间（分钟数），空字符串表示清除")
    private String tpi;

    @Schema(description = "血氧间隔时间（分钟数），空字符串表示清除")
    private String oxi;

    @Schema(description = "最大心率阈值，空字符串表示清除")
    private String maxheartrate;

    @Schema(description = "最小心率阈值，空字符串表示清除")
    private String minheartrate;

    @Schema(description = "最大收缩压阈值（高压），空字符串表示清除")
    private String bphighmax;

    @Schema(description = "最小收缩压阈值（高压），空字符串表示清除")
    private String bphighmin;

    @Schema(description = "最大舒张压阈值（低压），空字符串表示清除")
    private String bplowmax;

    @Schema(description = "最小舒张压阈值（低压），空字符串表示清除")
    private String bplowmin;

    @Schema(description = "最大血氧阈值，空字符串表示清除")
    private String bloodoxmax;

    @Schema(description = "最小血氧阈值，空字符串表示清除")
    private String bloodoxmin;

    @Schema(description = "最大体温，空字符串表示清除")
    private String tempmax;

    @Schema(description = "最小体温，空字符串表示清除")
    private String tempmin;

    @Schema(description = "跌倒报警开关状态，0表示关闭，1表示开启")
    private String falldown;

    @Schema(description = "关闭间隔上传设置，1=关闭定位, 2=关闭心率, 3=关闭血氧, 4=关闭体温, 5=关闭血压")
    private String closeInter;

    @Schema(description = "白名单开关状态，0表示关闭，1表示开启")
    private String whitelist;

    @Schema(description = "拨号盘开关状态，0表示关闭，1表示开启")
    private String dialkey;

    @Schema(description = "睡眠起床时间，例如 \"09:10\"，24小时制")
    private String sleepUp;

    @Schema(description = "睡眠入睡时间，例如 \"20:00\"，24小时制")
    private String sleepDown;

    @Schema(description = "睡眠开启状态，0表示关闭，1表示开启")
    private String sleepStatus;

    public Map<String, String> toMap() {
        Map<String, String> map = new HashMap<>();
        for (Field field : this.getClass().getDeclaredFields()) {
            field.setAccessible(true);
            try {
                Object value = field.get(this);
                if (value != null) {
                    map.put(field.getName(), (String) value);
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return map;
    }
}
